双向中继把 "流量穿过中间节点" 转化为两条描述符之间的字节搬运,动作分为五步。第一步,`socket` 创建套接字,`setsockopt` 设置地址复用,`bind` 绑定回环地址与本地端口(命令行传入,缺省 8080),`listen` 进入监听。第二步,`accept` 取出一个客户端连接。第三步,`read` 读取客户端发来的请求并原样打印,不改动其中任何字节。第四步,`connect` 上游回环(命令行传入,缺省 127.0.0.1:8000),`write` 把已读到的请求原样转发给上游。第五步,`select` 同时监视客户端与上游两侧的读就绪,哪一侧就绪就 `read` 后 `write` 到另一侧,任一侧读到 0(断开)即返回,最后 `close` 两条描述符。